package com.tddx.activiti.utils;

public class StringUtils extends org.apache.commons.lang3.StringUtils{
	
	public static String lowerFirst(String str, String...symbols){
		String result = capitalizeBySymbol(str, symbols);
		result = lowerCase(result.substring(0, 1)) + result.substring(1);
		return result;
	}
	
	/**
	 * 根据 symbol(给定符号)，把指定符号去掉并使相跟的字母大写
	 * @param str 字符串
	 * @param symbol 指定符号
	 * @return 返回
	 */
	public static String capitalizeBySymbol(String str, String symbol){
		return capitalizeBySymbol(str, symbol, false);
	}
	
	/**
	 * 根据 symbol(给定符号)，把指定符号去掉并使相跟的字母大写
	 * @param str 字符串
	 * @param symbol 指定符号
	 * @return 返回
	 */
	public static String capitalizeBySymbol(String str, String...symbols){
		return capitalizeBySymbol(str, false, symbols);
	}
	
	
	/**
	 * 根据 symbol(给定符号)，把指定符号去掉并使相跟的字母大写
	 * @param str 字符串
	 * @param symbol 指定符号
	 * @param b 如果为false:则中间是一个字母，跟符号的，符号后的字母不大写；如：sys_t_dict, 结果为SysTdict，
	 *        反之  b 如果为true ,则一个字母跟符号，在跟字母也大写
	 * @return
	 */
	public static String capitalizeBySymbol(String str, String symbol, boolean b){
		String[] strArr = str.split(symbol);
		String result = "";
		boolean isCaptial = true;
		for(int i=0; i<strArr.length; i++){
			String tmp = strArr[i];
			if(isCaptial){
				result += capitalize(tmp);
			}else{
				result += tmp;
			}
			isCaptial = true;
			if(tmp.length()==1){
				isCaptial = b;
			}
		}
		return result;
	}

	
	/**
	 * 根据 symbol(给定符号)，把指定符号去掉并使相跟的字母大写
	 * @param str 字符串
	 * @param symbol 指定符号
	 * @return 返回
	 */
	public static String capitalizeBySymbol(String str, boolean b, String...symbols){
		for(String symbol: symbols){
			str = capitalizeBySymbol(str, symbol);
		}
		return str;
	}
	
}
